package com.alita.ramdom;

import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * @Author Luan
 * @Date 2023/3/1 14:00
 * @Description map
 */
public class MapRandom {
    private MapRandom() {
        throw new IllegalStateException("BaseRandom class");
    }

    /**
     * 随机获取map中的元素
     *
     * @param map 参数 map
     * @param <K> 泛型
     * @param <V> 泛型
     * @return 元素
     */
    protected static <K, V> Map.Entry<K, V> randomMapEntryOne(Map<K, V> map) {
        if (null == map || map.isEmpty()) {
            return null;
        }
        return getOne(map);
    }

    /**
     * 随机获取map中的元素
     *
     * @param map 参数 map
     * @param <K> 泛型
     * @param <V> 泛型
     * @return 元素
     */
    private static <K, V> Map.Entry<K, V> getOne(Map<K, V> map) {
        Set<Map.Entry<K, V>> entrySet = map.entrySet();
        int index = Random.rInt(entrySet.size());
        Iterator<Map.Entry<K, V>> iterator = entrySet.iterator();
        Map.Entry<K, V> entry = iterator.next();
        for (int i = 0; i < entrySet.size(); i++) {
            if (i == index) {
                return entry;
            }
            entry = iterator.next();
        }
        return entry;
    }
}
